import { useGet, usePost, useDelete } from '@/utils/request'

/**
 * 创建题目
 * @param params - 题目参数
 */
export const addProblemApi = (params: API.Problem.ProblemAddRequest) => {
  return usePost<number, API.Problem.ProblemAddRequest>('/problem/add', params)
}

/**
 * 删除题目
 * @param id - 题目ID
 */
export const deleteProblemApi = (id: number) => {
  return usePost<boolean>(`/problem/delete/${id}`)
}

/**
 * 更新题目
 * @param params - 更新参数
 */
export const updateProblemApi = (params: API.Problem.ProblemUpdateRequest) => {
  return usePost<boolean, API.Problem.ProblemUpdateRequest>('/problem/update', params)
}

/**
 * 分页获取题目列表（仅管理员）
 * @param params - 查询参数
 */
export const getProblemListPageApi = (params: API.Problem.ProblemQueryRequest) => {
  return usePost<API.Problem.ProblemPage, API.Problem.ProblemQueryRequest>('/problem/list/page', params)
}

/**
 * 根据ID获取题目（详情）
 * @param id - 题目ID
 */
export const getProblemVoByIdApi = (id: number) => {
  return useGet<API.Problem.ProblemVO>(`/problem/get/vo/${id}`)
}

/**
 * 发布题目
 * @param id 题目ID
 * @returns 
 */
export function publishProblemApi(id: number) {
  return usePost<boolean>(`/problem/publish/${id}`)
}

/**
 * 取消发布题目
 * @param id 题目ID
 * @returns 
 */
export function unpublishProblemApi(id: number) {
  return usePost<boolean>(`/problem/unpublish/${id}`)
}

/**
 * 分页获取题目列表（用户端）
 * @param params - 查询参数
 */
export const getProblemListPageVoApi = (params: API.ProblemQueryRequest) => {
  return usePost<API.ProblemVOPage, API.ProblemQueryRequest>('/problem/list/page/vo', params)
} 

/**
 * 检查用户是否通过题目
 * @param params {problemId:number} 用户id
 * @returns true or false
 */
export const checkProblemPassApi = (params:{problemId:number}) => {
  return useGet<boolean>(`/problem/check/pass/${params.problemId}`)
}
